import java.util.Scanner;

public class TestDemo {
    //方法的递归:自己调用自己的机制
    //1、有一个趋近于终止的条件
    //2.自己调用自己
    //递：
    // 归
    public static int func(int n) {
        if(n <= 2) {
            return 1;
        }
        return func(n - 1 ) + func(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(func(n));

    }
    public static int sum2(int n) {
        if(n > 10) {
        return sum2(n/10) + n % 10;
        }
        return n%10;
    }
    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(sum2(n));
    }
    public static int  sum1(int n) {
        if (n == 1) {
            return  1;
        }
        int tmp = n + sum1(n - 1);
        return  tmp;
    }
    public static void main3(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(sum1(n));
    }
    //这
    public  static  void func(int a, int b) {

    }
    public static void main2(String[] args) {
        int a = 10;
        int b = 20;
    }
    //什么是方法？
    //把需要重复的功能 抽象出来
    //  局部变量的生命周期是函数结束
    //函数的调用需要在栈上开辟栈帧 当函数调用结束之后，该栈帧 就会被系统回收
    //
    /**
     * 1、能够模块化的组织代码
     * 2.能重复使用，一份代码可以在多位置使用
     * 3、让代码更好理解更简单
     * 4、直接调用现有方法开发，不必重复造轮子
     * public static 不是必须加的
     * 因为要在main 函数使用 所以要加
     *
     * @param n
     *
     */
    /**
     * 求n的阶乘和
     * @param n
     * @return 返回和
     */
    public static int func1(int n) {
        int sum = 0;
        for(int i = 1; i <= 5; i++) {
            sum += fac(i);
        }
        return  sum;
    }

    /**
     * 求n的阶乘
     * @param n
     * @return n的阶乘
     */
    public  static int fac(int n) {//n为形参
        int ret = 1;
        for(int i = 1; i <= n; i++) {
            ret *= i;
        }
        return  ret;
    }
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        // 返回值要匹配
        // return 代表函数的结束 也就是说函数的后不能一些代码
        //函数调用 ：参数的个数 对应的类型 都要匹配
        //只能返回一个数据
        // 一个方法可以多次调用
       int a =  func(n);// 5 为实参
       System.out.println(a);
    }
}
